package com.gray.blog.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gray.blog.common.entity.BaseEntity;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

public interface BaseDao<T extends BaseEntity> {

    /**
     * 获取全部数据(建议不要使用)
     */
    List<T> getAllData();

    /**
     * 限制性获取数据
     */
    List<T> getDataLimit(@Param("limit") Integer limit, @Param("param") Map<String, Object> param);

    /**
     * 分页获取数据
     */
    IPage<T> getAllDataByPage(Page page);

    /**
     * 根据关键词分页获取数据
     */
    IPage<T> getAllDataByWordAndTypeByPage(Page page, @Param("param") Map<String, Object> param);

    /**
     * 根据id获取
     */
    T getById(@Param("id") String id);

    /**
     * 更新数据(根据id更新)
     */
    int update(@Param("obj") T entity);

    /**
     * 插入数据
     */
    int insert(@Param("obj") T entity);

    /**
     * 逻辑删除
     */
    int delete(@Param("obj") T entity);

    /**
     * 根据id逻辑删除
     */
    int deleteById(@Param("id") String id);

}
